odoo/doc/reference/mobile.rst

215 lines
5.8 KiB
ReStructuredText

:banner: banners/mobile.jpg
:types: api
.. _reference/mobile:
==================
Mobile JavaScript
==================
Introduction
============
In Odoo 10.0 we released a mobile app, allows you to access all **Odoo apps**
(even your customized modules).
The application is a combination of **Odoo Web** and **Native Mobile
components**, in other words it is a Odoo Web instance loaded inside native
WebView container of mobile.
This page documents how you can access mobile native components like Camera,
Vibration, Notification, Toast through Odoo Web (via JavaScript). For this, you
do not need to be a mobile developer, if you know Odoo JavaScript API you can
access all available mobile features.
.. warning:: These features work with **Odoo Enterprise 10.0+** only
How does it work?
=================
Internal working of Mobile application:
.. image:: images/mobile_working.jpg
Of course, it is a web page that loads on a Mobile Native Web container. But it
is integrated in such a way that you can access native resources from your web
JavaScript.
WebPages (Odoo Web) is on the top of each layer, where second layer is a Bridge
between Odoo Web (JS) and Native component of mobile.
When any call from JavaScript triggered it passes through Bridge and Bridge
pass it to native invoker to perform that action.
When the native component has done their work, it again is passed to Bridge and
you get the output in JavaScript.
Process time taken by the Native component depends on what you are requesting
from Native resources. Like Camera or GPS Location.
How to use it?
==============
As Odoo Web Framework, Mobile api can be used anywhere by getting object of
**web_mobile.rpc**
.. image:: images/odoo_mobile_api.png
Mobile rpc object provide list of methods available (Works only with Mobile
App).
Just check for method availability and execute it.
Methods
-------
.. note:: Each of the methods returns JQuery Deffered object with returning
data JSON dictionary
Show Toast in device
.....................
.. js:function:: showToast
:param object args: **message** text to display
A toast provides simple feedback about an operation in a small popup. It only
fills the amount of space required for the message and the current activity
remains visible and interactive
.. code-block:: javascript
mobile.methods.showToast({'message': 'Message sent'});
.. image:: images/toast.png
Vibrating device
................
.. js:function:: vibrate
:param object args: Vibrates constantly for the specified period of time
(in milliseconds).
Vibrate mobile device with given duration.
.. code-block:: javascript
mobile.methods.vibrate({'duration': 100});
Show snackbar with action
.........................
.. js:function:: showSnackBar
:param object args: (*required*) **Message** to show in snackbar and action **button label** in Snackbar (optional)
:returns: ``True`` if User click on Action button, ``False`` if SnackBar auto dismissed after some time
Snackbars provide lightweight feedback about an operation. They show a brief
message at the bottom of the screen on mobile and lower left on larger devices.
Snackbars appear above all other elements on screen and only one can be
displayed at a time.
.. code-block:: javascript
mobile.methods.showSnackBar({'message': 'Message is deleted', 'btn_text': 'Undo'}).then(function(result){
if(result){
// Do undo operation
}else{
// Snack Bar dismissed
}
});
.. image:: images/snackbar.png
Showing notification
.....................
.. js:function:: showNotification
:param object args: **title** (first row) of the notification, **message** (second row) of the notification, in a standard notification.
A notification is a message you can display to the user outside of your
application's normal UI. When you tell the system to issue a notification, it
first appears as an icon in the notification area. To see the details of the
notification, the user opens the notification drawer. Both the notification
area and the notification drawer are system-controlled areas that the user can
view at any time.
.. code-block:: javascript
mobile.showNotification({'title': 'Simple Notification', 'message': 'This is test of simple notification'})
.. image:: images/mobile_notification.png
Create contact in device
.........................
.. js:function:: addContact
:param object args: Dictionary with contact details. Possible keys (name, mobile, phone, fax, email, website, street, street2, country_id, state_id, city, zip, parent_id, function and image)
Create device contact with given contact details.
.. code-block:: javascript
var contact = {
'name': 'Michel Fletcher',
'mobile': '9999999999',
'phone': '7954856587',
'fax': '765898745',
'email': 'michel.fletcher@agrolait.example.com',
'website': 'http://www.agrolait.com',
'street': '69 rue de Namur',
'street2': false,
'country_id': [21, 'Belgium'],
'state_id': false,
'city': 'Wavre',
'zip': '1300',
'parent_id': [8, 'Agrolait'],
'function': 'Analyst',
'image': '<<BASE 64 Image Data>>'
}
mobile.methods.addContact(contact);
.. image:: images/mobile_contact_create.png
Scanning barcodes
..................
.. js:function:: scanBarcode
:returns: Scanned ``code`` from any barcodes
The Barcode API detects barcodes in real-time, on device, in any orientation.
It reads the following barcode formats:
* 1D barcodes: EAN-13, EAN-8, UPC-A, UPC-E, Code-39, Code-93, Code-128, ITF, Codabar
* 2D barcodes: QR Code, Data Matrix, PDF-417, AZTEC
.. code-block:: javascript
mobile.methods.scanBarcode().then(function(code){
if(code){
// Perform operation with code scanned
}
});
Switching account in device
...........................
.. js:function:: switchAccount
Use to switch device account.
.. code-block:: javascript
mobile.methods.switchAccount();
.. image:: images/mobile_switch_account.png