Release date: December 1, 2017Download
Mendix 7.9.0 marks the general availability of Atlas UI. This is a major change in the way user interfaces are built in Mendix.
Atlas UI provides you with page templates, building blocks, layouts, theming, and design properties. It can be customized in several ways:
- You can influence colors and logos by using the Theme Customizer in the Web Modeler
- You can add and remove page templates and building blocks
- You can even completely replace the Mendix Atlas UI resources with UI resources specific to your company
To make all this possible, there have been many changes to the Desktop Modeler.
Your Own Page Templates and Building Blocks
- We made it possible to create your own page templates and building blocks. These local page templates and building blocks will be shown alongside pre-existing templates in the Create Page wizard. So, if you didn’t like the default page templates, now you can implement your own!
- And why would you keep these amazing page templates and building blocks to yourself? Bundle your custom page templates, building blocks, and themes in a UI resources package to easily create multiple projects that share a unified look and feel. You can create your own UI resources package by exporting the module marked as a UI resources package. This will create a package that includes the module as well as the contents of the
themedirectory. This package can be uploaded to the Private App Store by selecting the UI Resources category (this category of content can be accessed via the App Store button in the Desktop Modeler). From there, you can distribute these amazing resources to all your company projects, including company-branded starter apps from the App Store.
- Building blocks can be easily created by right-clicking a widget and selecting Create building block. Page templates can be created by right-clicking a page and choosing Create page template. After that, they’re instantly available as building blocks and page templates in your Modeler.
- Page templates and building blocks contain no references to the domain model. In fact, it is an error to have such references. If you ever need to clear references, you can right-click a widget or the background of a page and choose Clear references.
- The toolbar and context menu for the page editor have been cleaned up. You will now see a generic option to add a widget, resulting in a searchable dialog box that allows you to select the widget to add. Additionally, we’ve sorted the widgets shown under Add-on widgets alphabetically.
- After their introduction in the Web Modeler, we have added building blocks to the Desktop Modeler! Building blocks offer a convenient way to add pre-configured widgets to pages as easily as you would add normal widgets. This speeds up page creation, as it enables the re-use of recurring UI patterns.
UI Resources Package
- The page templates and building blocks are now inside your own project instead of baked into the Desktop Modeler. They are stored inside a module that is marked as UI resources package. This module has a green icon and can typically be found in the App Store Modules node in the Project Explorer.
- Existing projects will get this extra module upon conversion (called UI_Resources). Also, custom widgets will be added to your project to support the building blocks and page templates that contain them.
- New projects will be based on the final version of Atlas UI and will include the Atlas UI resources.
- The UI resources package can be selected on the Theme tab page in the Project Settings in Project Explorer.
- The Mendix App Store now supports company-specific starter apps, too. Upload your company-branded starter app—with your own UI resources package included—to the Private App Store with the Create New App category. After uploading, the starter app will be available to all Mendix Modeler users within your company when they create a new app in the Desktop Modeler or Developer Portal.
- The Blank App that you can create from the Desktop Modeler (even without an internet connection) is also a proper Atlas UI app now.
- We deprecated the theme ZIP file setting, because UI resource packages are the future of theming. To get rid of the deprecation, you can extract the ZIP file to your theme folder and set the setting to
- Importing a UI resources package will move the
theme_oldbefore extracting the new theme.
The following settings have been eliminated from layout documents:
Save placeholder, and
Cancel placeholder. Instead, the requirement is now that one placeholder is called
Main. The Desktop Modeler uses this information to place automatically generated content. Switching layouts and creating pages based on layouts simply uses the names of placeholders.
Other UI Improvements
- You can extract snippets in places where they are used by right-clicking the snippet call widget and choosing Extract snippet.
- Images from the image collection can be exported to a file. This also works when multiple images are selected.
Mathematical Expression Functions
We added support for mathematical functions as well as
formatDecimal to the client expressions used in conditional formatting and validations.
- We upgraded our internal web server Jetty to version 9.4.7. When retrieving server statistics, the
max_idle_time_s_low_resourcesinformation is not returned anymore, because Jetty does not provide this information anymore. Also, the shutdown procedure of Mendix apps has been improved in the process of upgrading.
- We improved the exception messages when accessing or storing files in Azure Blob Storage or OpenStack Object Storage (“Swift”).
- We introduced a pop-up window explaining the sync process while opening an app in the Web Modeler.
- We won’t reset application log levels to default anymore on the restart, stop, and re-deploy of your app from the Modeler. (This is the result of an idea from the Mendix Idea Forum.)
- In the Call REST service activity, you can now use the same request header more than once.
- We regrouped the Add document menu. All mapping-related documents are now in the Mappings group.
- When opening an after-startup microflow using the Show button in the Project Settings, the editing state (as in, the
*in the editor tab) of that microflow got confused, resulting in strange behavior. We resolved this issue. (Ticket 38078)
- A data grid showing a reference set for an entity that also contains a virtual attribute triggered an error. We fixed that for you. (Tickets 58743, 58659)
- When a new value is set for a both association in the client, the association value of the previously referred object was not adjusted accordingly. This is now fixed. (Ticket 57481)
- When retrieving association information for an entity and its generalized entity, it is possible to specify a different retrieval strategy for the same association. In the scenario when a generalized entity retrieved the full information of the association and the specific entity did not, an error occurred. This has been fixed. (Ticket 57199)
- We improved the logging for uniqueness constraint violations. Mendix will now log if all the checks on uniqueness constraints have passed with this message: “Uniqueness constraint violation diagnostics has been successfully finished. No violations are found.” Also, all additional logging of violations will happen at the
INFOlevel if the custom setting
DataStorage.EnableDiagnosticsis turned on, removing the need to set specific loggers to
- We fixed the issue where creating a new attribute for an entity and a unique constraint on that same attribute at the same time made the synchronization fail. (Ticket 58370)
- We fixed the issue where unpinned certificates were not applied to web service calls. (Ticket 54633)
- We fixed the issue where import mappings using
find by keyto find existing objects tried to also update the key attribute(s) of the found object.
- If a text widget used an enumeration attribute as a parameter, the enum key was shown instead of its caption. This is no longer an issue. (Ticket 58848)
- Some widgets were not properly constructed on Internet Explorer 11 when placed on a page outside of a data view or list widget. That is now fixed.
- When an input triggered a refresh of the surrounding list view, the same input was always refocused after the refresh, even if another input was focused by the user in the meantime. The focus now stays on the newly-focused input instead. (Ticket 56402)
- An error in the client no longer occurs if a report parameter of the type Integer/Long has
Is rangeunchecked but does not have a number range with both a beginning and an end. (Ticket 56990)
- If a validation error was shown for an input without a label, this caused all other inputs in the same data view to have error styling as well. This has been fixed.
- In some situations, an object associated to another object cannot be committed during the execution of a before/after commit event, resulting in an error such as “Object of type ‘MyModule.MyEntity’ with guid ‘12345’ cannot be updated, as it does not exist anymore.” For example, consider two new objects
A(parent) is associated with
Ahas a before- or after-commit event. In this event,
Bwill be changed and committed. If you then commit
Bwill be marked as ‘autocommitting’. Because of this, committing
Bin the before- or after-commit event of
Awill fail, as it expects
Ato already exist in the database, which is not yet the case. (Tickets 59099, 59288)
- Workaround 1 – don’t commit (a child) in a before-commit event, as the child will already be autocommitted by Mendix.
- Workaround 2 – commit the child object before committing the parent object.