DXP24.10.0000 Changelog

November 18, 2024

i18n Internationalization

Texts that need to be locale-specific, translated, and/or reused across multiple locations can be defined in local or global i18n models. The attributes can be accessed through bindings in the App Designer and relevant Cockpit Artifacts, as well as from JavaScript or TypeScript code.

For more information, see I18n Text & Translation.

App Designer

Performance improvements for load, save, and activation

Noticeable mainly for larger apps, the waiting times for loading, saving and activating an app has been reduced.

Local i18n texts and translations

App-local i18n text attributes can be created for texts that need to be locale-specific, or reused or accessed from JavaScript or TypeScript.

Quick mode for the binding dialog

The binding dialog defaults to reading possible bindings online from the back end, but this can be switched off by selecting "Quick binding" in the settings menu of the binding dialog. This will benefit mainly larger apps by reducing the opening time of the binding dialog. The binding data can be refreshed manually as needed. There is an accompanying setting "Remember expanded nodes" to keep the same nodes open in the dialog the next time it opens. This is reset when switching between model and attribute bindings.

Tabs in the binding dialog

For quicker access, the bindings are separated into tabs for different binding sources, such as App Class, Rest API, OData, Multi Model, Generic, API Factory, Global i18n, and Local i18n, depending on what’s currently available in the application. There is still an All tab with the entire tree.

Add i18n text from binding dialog

An option has been added to create a local i18n attributes directly from the binding dialog and bind the current attribute to it.

Convert existing translations to i18n attributes

From the Language Translations page, a tool for converting existing translations to i18n attributes is available. The tool allows you to name the attributes, change the text if needed, and it will create the attribute, transfer all existing translations, and bind the field value to the attribute. Note that this tool can be used to create i18n attributes for any text, even if no translations has been made.

Script search

The script search now has the functionality to specify case-sensitive search, whole-word search, and regex search.

Object search

The object search allows to find UI tree objects based on their names. This may also serve as an alternative to the UI tree search filter that by necessity opens the entire tree.

Attribute search

The attribute search uses the filters Object Type (example: Button or Table), Attribute Name (example: visible or tooltip) and Attribute Value (example: true or {i18n>someText}). The attribute value is accompanied by a comparator (Equal, Not Equal and Contains) to determine the search.

TODO search

The TODO search finds comments in the code that start with the common tags TODO, FIXME, XXX, OPTIMIZE, or REVIEW.

Selection of Rest API and Operation

A dialog is created to facilitate selection of Rest API and Operation, including a hierarchical overview and search capabilities.

Tree node padding adjustable

A user setting has been added to affect the padding of the indentation of the UI tree and components tree.

Image media binding by path

It is now possible to access files in the media library by their paths. The base path is /neptune/public/media followed by the path to the file you want to access, for example, /neptune/public/media/iso7010/m002.jpg. This feature is very suitable for accessing media library through a formatter based on binding data.

Manually editable attribute values

All attribute values are open for manually typing in their values. In cases where there is a list of valid values, only bindings or a valid entry will be accepted. Bindings are automatically detected and formatters will be enabled as needed.

Rollback to version previous

In the Version Management, a feature to roll back to a specific version has been added to the comparison panels. The rollback will create a new current version with the contents of the selected one and will not remove any other already created versions.

New object API Factory

A new object for API Factory is now available in both designers. You can find this new object in the Library under Resources>APIFactory.

For more information, see API Factory in the App Designer.

Object Default Values

The default values for the object are no longer saved in the runtime tables. They are still loaded and displayed when working with the objects, but only values different from the default ones will be saved.

OData Improvements

In addition to OData V2, we introduced OData V4 support. If you want to use OData V4 and require the Neptune Proxy (see flag Enable Proxy (prevent CORS) in Cockpit Tool OData Source), you will need to use the Proxy Version 2 (see dropdown Proxy Version in Cockpit Tool OData Source). You can use the corresponding ODataModelV4 element in the sap.ui.model folder within the Neptune App Designer. You also have the option to directly bind list-based UI5 controls (e.g. sap.m.Table, sap.ui.table.Table) to the OData model directly. To enable this you can use the checkbox (Use OData Model for UI Binding) that you find in the details section of the control you want the OData source to be bound to. When enabled, the binding will be applied to the OData model directly and will not add an additional JSONModel. The interaction with the OData source can be simplified significantly. However, using this binding mechanism, you will use the possibility to have offline caching mechanisms usable for the OData source.

OData Source

We significantly improved the Proxy handler of our OData Source Cockpit Tool by adding a Proxy Version 2. You can read all about the new Proxy handler in our documentation.

AppCache

AppCache.getText function

The AppCache.getText function can be used to get i18n text values and/or replace numbered placeholders. Placeholders are on the format {0}, {1}, etc. and start counting at 0. The signature for the function is AppCache.getText(value, …​replace), where value is either an i18n local or global binding string or a plain text, and the …​replace parameters can be either comma-separated replacement values or an array of replacement values.

Valid examples are the following:

console.log(AppCache.getText("Hello {0}!", "world"));
console.log(AppCache.getText("{i18n>helloText}", "world"));
console.log(AppCache.getText("{i18n.globalModel>helloTest}", "world"));
console.log(AppCache.getText("{i18n>complexExample}", "placeholder1", ["placeholder2", "placeholder3"]));

Launchpad

Binding to global i18n model

It’s now possible to bind the field Name to an attribute in a global i18n model.

Login Page

Binding to global i18n model

It’s now possible to bind the fields System Name, System Description, Notice Title, and the Footer Link Labels to attributes in a global i18n model.

Mobile Client

Binding to global i18n model

It’s now possible to bind the field Name to an attribute in a global i18n model.

New OAuth authentication provider

We introduced a new OAuth authentication flow for our mobile clients: SAP Open ID Connect (SOIDC).

The previous OAuth authentication flow will show as SAP (SOAUTH2). You can read all about those authentication methods in our documentation.

Tile

Binding to global i18n model

It’s now possible to bind the fields Title, Sub Title, Footer, Menu Text, Open Button Text, ARIA Label, Help Link Text, and Sidepanel to attributes in a global i18n model.

Tile Group

Binding to global i18n model

It’s now possible to bind the fields Title, Sub Title, and Menu to attributes in a global i18n model.

Cockpit

Expand navigation list on hover

This setting has been removed.