Release date: August 29th, 2017Download
After the introduction of client expressions for conditional formatting, we got very positive feedback, so we decided to make things even more crazy and expressive!
Starting with this release, you can use expressions to validate your input fields client-side. This is blazingly fast, as it does not trigger any request to the Runtime. This means it can be used in offline apps as well. You can use all the functions and tokens you are already used to in other client-side expressions. Additionally, we provide the special variable
$value to represent the to-be-set value of the input.
We also added a couple of your most favorite validations—like
Improved Offline App Startup Performance
We optimized the startup performance of offline apps by skipping data and file synchronizations on subsequent application startups. Mendix still does them, but only if your app has been redeployed in the meantime. This significantly improves perceived application performance and time-to-interactive, especially in cases of weak connectivity.
Offline Data Retrieval for Custom Widgets
We have created a new API for custom widgets to fetch data while being offline:
It supports data filtering, sorting, and paging. Please note that offline apps currently download and synchronize only that data which is used by some of the “core” UI widgets.
Runtime API Extensions
- We added an alternative
executeWithConnectionmethod to the
com.mendix.datastorage.DataStorageJava class, which enables the connection to be taken from the current context. This allows queries to be executed within the current transaction. For more details, see Interface DataStorage.
- The Java API has been extended with the new
IOQLTextGetRequest createOQLTextGetRequestFromDataSet(String dataSetQualifiedName)method. This enables creating an instance of
OQLquery extracted from a dataset via its qualified name, which is provided as an argument to the method. For more details, see Class Core.
- The Java API now allows for registering callbacks before and after commit, create, change, and delete actions. For more details, see Core.getListenersRegistry.
- Core.addListener has been deprecated in favor of Core.getListenersRegistry().addListener.
Mendix Developer App Functionality Embedded in Mendix Mobile App
The Mendix Developer App functionality is now embedded in the Mendix Mobile app. The View Hybrid Mobile App screen in the Desktop Modeler now also refers to the Mendix Mobile app.
In our effort to improve the quality of the client, we have rewritten the Text Widget. You should not notice any differences compared to previous versions.
- As you might have heard, Microsoft ended support for Internet Explorer versions 10 and below. Starting with this release, we are following their lead and have officially stopped supporting IE 10.
- We removed support for a few (and as far as we know, unused) parameters of the deprecated
mx.server.requestClient API call:
options.unique– from now on, the same requests are never merged together (meaning,
options.uniqueis considered to be
options.sync– the Mendix Platform does not support sending synchronous
httprequests anymore, as that feature was deprecated in browsers.
- The Client API method
session.getUserRoles()has been removed. That API was never supposed to be public or used externally, but unfortunately it was. Any usages should be changed to
session.getUserRoleNames(), which is the new and officially public API method.
session.getUserRoles()method was used in the Mendix Feedback Widget, so we made the Modeler automatically upgrade it. Note that if you have made a custom version of this widget with the same name, your changes will be lost in the upgrade. To prevent the auto-upgrade, you can rename the
.mpk. Of course, you will then have to update
session.getUserRoleNames()in your custom widget.
The custom widgets listed below use a private API that has been improved and changed. This required us to update these widgets so that they keep working in Mendix 7.6. If you use any of these widgets, go to the Mendix App Store to download the latest version.
- Range slider
- Progress bar
- Star rating
- Progress circle
- Time series
- Badge button
- Google maps
- Image viewer
- We fixed an issue where the deployment crashed because of the invalid configuration of conditional visibility or editability settings. (Ticket 52259)
- We fixed the bug where multiple calls to a microflow done in quick succession from the client (for example, when the user clicked the same button multiple times) were merged together and actually triggered only a single execution of the microflow. (Ticket 53109)
- We fixed an issue where adding a new value to an enumeration used in conditional visibility/editability reset the configuration for the existing enumeration values incorrectly. (Ticket 54070)
- We fixed an issue where empty list view templates caused deployment failure. (Ticket 54291)
- We fixed an issue where the updated value of a virtual attribute was not calculated during microflow execution. (Ticket 52113)
- We fixed an issue where date tokens like
[%BeginOfCurrentWeek%]were evaluated in client-side expressions but did not respect the first day of the week project setting.
- We fixed the issues where specific changes in the model where not picked up by the running application upon a fast deployment (model update) (for example, when an Open Page action ignored the changes of the layout type of the target page).
- We fixed an issue where exporting to Excel did not export all records. (Ticket 54441)
- We improved how hybrid apps detect an absence of network connectivity. Now, it takes less time to recognize that a present network connection has no access to the internet or is unusable due to low throughput.
- We fixed exceptions in the microflow editor that occurred while pressing Ctrl + arrow keys.
- We aligned the default size of annotations between the Desktop Modeler and Web Modeler.
- We improved the find-text functionality in REST call actions and call web service actions.
- We fixed an issue with the
$orderbyOData query option to perform sorting even when you change the exposed name of the entity attributes.
- We fixed the sorting of the system member (
changedBy) of a generalization of an entity. (Ticket 49207, 52831)
- We fixed the filtering on the system member (
changedBy) of a generalization of an entity. (Ticket 43946)
- We fixed the NullPointerException in the OQL query handler. (Ticket 49298)
- We fixed a corner-case bug that occurred when uploading images from a Java action. This resulted in a runtime exception when initiated before a first-time “regular” upload.
- We fixed the memory issues that occurred when the
System.Errorentity stayed in the memory too long. (Ticket 38117)
- We fixed an issue that made it impossible to tab to certain elements in the page (for example, tabbing from the first item in a list view to subsequent items). (Ticket 54074)
- We fixed an issue where reference set selectors and grids were producing errors while navigating back and forward. (Tickets 54820, 53481, 52270)
- We fixed an issue where some custom widgets were unable to load if placed in a tab container with conditional visibility.
- The log files for widgets that fail to build can now be found at
<deployment folder>\log\check-widgets\<widget name>.log. If you manually check widgets by selecting Tools > Check Widgets, the pop-up window detailing which widgets failed to build now contains a link to open the log directory. Also, when a file from a custom widget was removed, the build did not fail, because not all build remnants were cleaned up. We fixed this. (Ticket 53910)
- Validation messages will no longer trigger a pop-up window on phones. Instead, the first message is now scrolled into view.
- We fixed the bug that caused
FileDocumentSizesPopulateJobto infinitely query Amazon S3 to retrieve data about non-existing files. (Ticket 55851)
- When retrieving an entity with a virtual attribute without using a schema ID, references are not returned. This impacts the following scenarios: a template grid containing an entity with a virtual attribute will not show any data over an association (for example, nested data views); and custom widgets requesting Mendix objects with a virtual attribute through XPath will have no access to their associations. (Ticket 56016)
- Fixed in 7.7.1.
- For Atlas-based apps, it is not possible to use the Generate page functionality for buttons in the Tablet and Phone profiles. The Create Page dialog box shows no selectable page templates for these profiles.
- Fixed in 7.7.1.
- When a text widget has a placeholder for an enumeration attribute, the name of the enumeration is displayed instead of the caption. (Ticket 58848)
- Fixed in 7.9.0.
- 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)
- Fixed in 7.16.0.