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
orTable
), Attribute Name (example:visible
ortooltip
) and Attribute Value (example:true
or{i18n>someText}
). The attribute value is accompanied by a comparator (Equal
,Not Equal
andContains
) 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 thesap.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.