JavaScript для мобильных Устройств - Odoo 11.0

Введение

В Odoo 10.0 мы выпустили мобильное приложение, которое позволяет вам получить доступ ко всем приложениям Odoo (даже к вашим кастомизированным модулям).

Это приложение является комбинацией Odoo Web и Native Mobile components. Другими словами, это экземпляр Odoo Web, загруженный внутри собственного мобильного контейнера WebView.

На этой странице описано, как получить доступ к собственным мобильным компонентам, таким как Camera, Vibration, Notification и Toast, через Odoo Web (с помощью JavaScript). Для этого вам не нужно быть разработчиком мобильных приложений. Если вы знакомы с JavaScript API Odoo, вы можете получить доступ ко всем доступным мобильным функциям.

Как это работает?

Механизм работы мобильного приложения:

Конечно, это веб-страница, которая загружается в контейнер Mobile Native Web. Но он интегрирован таким образом, что вы можете получить доступ к native ресурсам из вашего web JavaScript.

web-страницы (Odoo Web) находятся в верхней части каждого слоя, где второй уровень представляет собой Bridge (мост) между Odoo Web (JS) и native мобильными компонентами.

Когда происходит вызов из JavaScript, он проходит через Bridge, а Bridge передает его native исполнителю для выполнения этого действия.

Когда native компонент завершает свою работу он передает ее Bridge который в свою очередь передает ее в JavaScript.

Время обработки, занимаемое компонентом native, зависит от того, что вы запрашиваете у native ресурсов. Например Camera или GPS.

Как это использовать?

Как и в случае с Odoo Web Framework, Mobile API можно использовать где угодно, получая объект от ** web_mobile.rpc **

Мобильный объект RPC вызовов предоставляет список доступных методов (это работает только с мобильным приложением).

Проверяет доступен ли метод и затем выполняет его.

Методы

Показать Toast(уведомление) на устройстве

showToast()
Аргументы
  • args (object) – сообщение текст для отображения

Toast предоставляет простой отзыв об операции в небольшом всплывающем окне. Он только заполняет объем, необходимый для сообщения, и текущая активность остается видимой и интерактивной.

mobile.methods.showToast({'message': 'Message sent'});

Вибрация устройства

vibrate()
Аргументы
  • args (object) – Постоянно вибрирует в течение указанного периода времени (в миллисекундах).

Заставляет вибрировать мобильное устройство с заданной продолжительностью.

mobile.methods.vibrate({'duration': 100});

Показать элемент Snackbar с действием

showSnackBar()
Аргументы
  • args (object) – (обязательный параметр) мessage показать Snackbar и действие button label в Snackbar (необязательный параметр)
Результат
True если пользователь нажал на Action button, False если Snackbar был автоматически скрыт через некоторое время.

Snackbar обеспечивают легкую обратную связь об операции. Они показывают краткое сообщение в нижней части экрана на мобильном телефоне или в левом нижнем углу на более крупных устройствах. Snackbar отображаются над всеми остальными элементами на экране, одновременно может отображаться только один элемент.

mobile.methods.showSnackBar({'message': 'Message is deleted', 'btn_text': 'Undo'}).then(function(result){
        if(result){
                // Do undo operation
        }else{
                // Snack Bar dismissed
        }
});

Показ уведомлений

showNotification()
Аргументы
  • args (object) – заголовок (первая строка) уведомления, сообщение (вторая строка) уведомления.

Уведомление - это сообщение, которое вы можете отобразить пользователю за пределами обычного пользовательского интерфейса вашего приложения. Когда вы указываете системе выдать уведомление, оно сначала появляется в виде значка в области уведомлений. Чтобы просмотреть подробности уведомления, пользователь открывает панель уведомлений. Как область уведомлений, так и панель уведомлений являются управляемыми системой областями, которые пользователь может просматривать в любое время.

mobile.showNotification({'title': 'Simple Notification', 'message': 'This is a test for a simple notification'})

Создание контакта на устройстве

addContact()
Аргументы
  • args (object) – Словарь с контактными данными. Возможные ключи (name, mobile, phone, fax, email, website, street, street2, country_id, state_id, city, zip, parent_id, function и image)

Создайте новый контакт на устройстве с указанными контактными данными.

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);

Сканирование штрих-кодов

scanBarcode()
Результат
Сканирует code любого штрих-кода

Штрих-код API обнаруживает штрих-коды в режиме реального времени, на устройстве, в любой ориентации.

Штрих-код API может считывать следующие форматы штрих-кода:

  • 1D штрих-коды: EAN-13, EAN-8, UPC-A, UPC-E, Code-39, Code-93, Code-128, ITF, Codabar
  • 2D штрих-коды: QR Code, Data Matrix, PDF-417, AZTEC
mobile.methods.scanBarcode().then(function(code){
        if(code){
                // Perform operation with the scanned code
        }
});

Переключение между аккаунтами не устройстве

switchAccount()

Используйте switchAccount для переключения от одного аккаунта к другому.

mobile.methods.switchAccount();