5.0 Release Notes¶
Mobile Development Kit Client 5.0.1¶
This patch release provides the following minor update and important bug fixes.
- On navigation between 2 diff tabs pages, progress banner shows 2 progress bars
- mobile services Client - App crash when rotating from landscape to portrait mode
- The
appEventData
is undefined when the back button is clicked - Failed to send post request with empty body on Android
- Mobile client throw exception when clicking tab in certain scenarios on Android
- Banner message cannot be shown in
PopoverMenu
action - Extension section with banner image failed to redraw when the mobile device changes orientation
- Side Drawer rules don't evaluate on open of drawer
AppUpdate
caused mobile client crash on Android- Contact List Page crashes Web Client
DatePicker
FormCell
control throws error:this._dom.formatValue is not a function
on Web Client- Failed to initialize application data service with
allowCaseConflicts
inCSDLOptions
on Web Client MasterDetail
page throws error -cannot read property 'backStack' of undefined
on Web Client
Mobile Development Kit Client 5.0¶
Notable new or changed features for the Mobile Development Kit Client 5.0
New UI Controls¶
Flexible Column Layout¶
Flexible Column Layout This control renders a flexible column layout with 2 columns in a page.
Each column's content is rendered as a page.
When the left most column is rendered with a section list, the right column next to it is used to render the detail of a selected item from list.
Side Drawer¶
Side Drawer is a global navigation menu which allows for lateral navigation across various pages in the app. Only one page can contain this control and this page has to be added as the 'MainPage' in Application.app file to enable the side drawer. The first item in the first section of this control will define the landing page of the application.
Enhancement¶
Support Header Type Control & Tabs in a Page¶
You can now add 2 container controls as root controls of a page.
- The first control must be a
Sectioned Table
that contain a single section with a header type control e.g. Object Header or Profile Header - The second control must be a
Tabs
control.
Any other combination is not supported.
PullDown
Event for Page¶
Page's PullDown
allows app to define action or rules to be executed when the page pull down operation is performed i.e. when user swipes down on the page.
Support Loading Indicator for Sectioned Table¶
Sectioned Table's LoadingIndicator
- You can enable the loading indicator and customize the text. The loading indicator will be displayed when the page is first loaded and will be dismissed when its content is rendered.
Support Data Paging Loading Indicator¶
DataPaging
property are supported in:
You can enable the loading indicator and customize the text. The loading indicator is displayed when the user scrolls to the bottom of the list and the app starts loading the next set of data. It gets dismissed when the next set of content is rendered.
Avatar and Circular Icon Support for Action Bar Item¶
IconText
and IsIconCircular
are 2 new properties introduced in Action Bar
. IconText
property is used to generate a text based avatar image and IsIconCircular
can be used to render a circular icon.
Action Support in the Banner Message¶
Banner Message now supports interactivity which can be used to execute an action or rule on click. Following new properties have been introduced to support this new behavior:
ActionLabel
can be used to indicate that banner is clickable.OnActionLabelPress
triggers an action or rule.DismissBannerOnAction
to dismiss the banner on click.
Action Support in Progress Banner¶
Progress Banner now supports interactivity which can be used to execute an action or rule on click. Following new properties have been introduced to support this new behavior:
ActionLabel
to indicate that progress banner is clickable.OnActionLabelPress
triggers an action or rule.DismissBannerOnAction
to dismiss the banner on click.CompletionActionLabel
to indicate that the completion message is clickable.OnCompletionActionLabelPress
triggers an action or rule on click of completion message.
getCircularImage
and getIconTextImage
Client API¶
getCircularImage
API generates a circular image and getIconTextImage
API generates an image using couple of characters.
SetFocus
API for Form Cell Controls¶
FormCellProxy
setFocus
API - Calling this function sets the focus on the control. Supported only on the following controls:
- Title Form Cell
- Simple Property Form Cell
- Note Form Cell
Support Auto Select Default Value in List Picker¶
List Picker AllowDefaultValueIfOneItem
- Support auto assigning default value if there is only one item in the list picker's value list.
Support Password Input Type in Simple Property Control¶
Simple Property Form Cell now support keyboard type Password
and NumberPassword
. NumberPassword
shows only numeric keyboard.
Enabling Search Across Multiple Sections in a Page¶
Search is now supported across multiple searchable section controls in a page. This is an enhancement over earlier release where Search would be disabled in case of more than one control in a page.
Support Rules, Logical Operators and Functions in Filter and Sort Control¶
Filter and Sorter form cell control have now been enhanced to support the following:
- Rules support for filter and sorter form cell.
- Support of standard OData logical operators such as less than, greater than, not equals and others.
- Support of standard OData functions such as
startswith
,endswith
and others. - Support of standard ascending and descending operators for sorter form cell.
Font Icon Styling¶
We have now introduced support for styling on font-icon e.g. sap-icon://add
.
- Action Bar Item's Style property
- Contact Cell's Styles property on
DetailImage
- Grid Row Item Style property
- Image Cell's Styles property Image
- Object Cell's Styles property on
DetailImage
,StatusImage
,SubstatusImage
- Object Header's Styles property on
DetailImage
,StatusImage
,SubstatusImage
- Profile Header's Styles property on
DetailImage
OData Service¶
Unified OData Initialize Action¶
We have now unified the Offline OData Initialize, OData Service Create and OData Service Open actions into a single action: OData Service Initialize (Action.Type.ODataService.Initialize
).
This new action can be used to initialize both offline or online OData service.
With the introduction of this new action, the following actions are now deprecated:
- Offline OData Initialize (
Action.Type.OfflineOData.Initialize
) - OData Service Create (
Action.Type.ODataService.Create
) - OData Service Open (
Action.Type.ODataService.Open
)
Partial Upload for Offline OData¶
UploadCategories
provides capability to selectively upload a subset of local changes to OData back end. This is an enhancement over earlier release where all the local changes had to be uploaded in one single request.
Support OData Deep Insert¶
Deep insert is now supported in OData Create Entity action.
You can now create an entity together with other related entities (navigation properties) inline as part of the entity's Properties
.
Note: For Offline OData, you can only do deep insert on navigation property for which the ToRole
refers to an association end with cardinality 0..1 or 1. Inline entities cannot be added using a navigation property for which ToRole
refers to an association end with cardinality . In short, A navigation property that refers to a set of entities* cannot be used for deep inserts.
Action Result Error responseBody
and responseCode
for OData Actions¶
ActionResult
of all online OData actions will now contain new property in the error when an error occurred, this applies only to online OData service calls. For Offline OData service call, the error is still found in the ErrorArchive
entity set after an upload operation.
ActionResult.error
now contains the following new properties
responseCode
- this is the HTTP error code in the response returned by the OData service.responseBody
- this is the response body payload returned by the OData service in string format. If the payload is a JSON string, you can parse it to be an JSON object for further processing.
REST Service¶
In 5.0, we now support defining a non OData destination as a service in your app. You can then use bind that service to any controls that support Target
binding such as Object Table.
You can find the structure of the binding for such service here
You can find a new Send Request
action. This actions is the equivalent of the ClientAPI.sendRequest
API.
We have also enhanced the ClientAPI.sendRequest
API to support setting the request body directly with:
- JSON object which will automatically be converted to JSON string with header
Content-Type: application/json
, if you have not provided your ownContent-Type
header. - Binary data, you need to set the appropriate
Content-Type
. - Array for multiple part form data by setting the header
Content-Type: multipart/form-data
Mobile Development Kit Client Client¶
Support In-App QR Code Onboarding From SAP Mobile Services Cockpit in Cloud Foundry¶
Client now supports the In-App QR code available in SAP Mobile Services cockpit of Cloud Foundry. This QR code is supported only from the in-built scanner of client and not from third party QR scanner.
ILOData Tool¶
Mobile Development Kit Client Client package now include ILOData tool that can be found in the Tools/ilodata
folder. Interactive Local OData (ILOData) is a command line utility that lets you execute OData requests, upload and download against a local offline store (.udb
file). For more information, see the README.html
in the folder.