2.3.1. Экшены¶
Экшены нужны для задания поведения программы на определённые действия пользователя. Программа поддерживает следующие экшены:
DEEPLINK - переход между окнами.
PRINT_DIALOG - открывает диалог для печати.
PRINT_DIALOG_TO_HOME - открывает диалог для печати, но при закрытии возвращается к главному экрану.
PRINT_DIALOG_WITH_CONFIRM_PREDICTION - открывает диалог для печати, при этом, когда происходит печать, посылается запрос на дообучение системы для распознавания товаров.
PRINT_DIALOG_TO_HOME_WITH_CONFIRM_PREDICTION - открывает диалог для печати, но при закрытии возвращается к главному экрану, при этом, когда происходит печать, посылается запрос на дообучение системы для распознования товаров.
CLOSE_PRINT_DIALOG - закрывает диалог печати.
GO_HOME - возврат к главному окну.
GO_BACK - возврат к предыдущему окну.
GO_MAIN - возврат к окну, помеченному как «MAIN».
GO_TO_SERVICE - запускает окно настроек.
QUERY - принимает запрос с данными.
SHOW_ERROR - показывает диалоговое окно с ошибкой.
Поддерживается несколько обработчиков действий пользователя:
action - обычное нажатие.
action_long - долгое нажатие.
accept_action - специальный обработчик нажатия на дочерний элемент
"PinPadAccept"
для контейнера"PinPadContainerRelativeLayout"
(ПИН-ПАД).action_startInput - специальный обработчик для клавиатур, действие выполняется при начале ввода.
2.3.1.1. Переход между окнами¶
Action: DEEPLINK
Действие предназначено для перехода между окнами приложения.
Чтобы выполнить переход, нужно добавить action с "type": "DEEPLINK"
и "data": "app://mertech.ru/scales/<МАКЕТ_С_ПАРАМЕТРАМИ>"
.
Параметр "?main=true"
задаёт следующему окну якорь «Main», обозначающий,
что при вызове экшена "GO_MAIN"
из дочерних окон приложение вернётся назад к помеченному.
Кроме предопределённых параметров можно передавать между окнами пользовательские параметры. К примеру, при нажатии на категорию, можно передать в открываемое окно идентификатор и название выбранной категории.
Перед первым параметром обязательно должен стоять "?"
, а все следующие параметры должны разделяться символом "&"
.
Для добавления дополнительных параметров, значение которых должно подставляться динамически, лучше создавать ссылки по шаблону, используя конструкцию @{fn:format('param1 value = %s, param2 value = $s', @{param1}, @{param2},...)}
.
В места, обозначенные символами "%s"
будут подставлены последовательно значения параметров, указанных далее через запятую.
"@{fn:format('app://mertech.ru/scales/products?order_by=name&q=%s&category=%s', @{search}, @{category})}"
В результате будет получена ссылка, похожая на следующую:
"app://mertech.ru/scales/products?order_by=name&q=клубника&category=1"
.
Использование:
"action": {
"@": {
"type": "DEEPLINK",
"data": "app://mertech.ru/scales/keyboard_qwerty?main=true&userparam='value'"
}
},
Пример использования:
В примере добавляется текстовое поле с текстом «Клавиатура QWERTY».
После обычного нажатия разметка из файла "keyboard_qwerty.json"
разворачивается в отдельном окне и помечается как "main"
.
{
"type": "TextView",
"layout_width": "305dp",
"layout_height": "57dp",
"gravity": "center",
"textSize": "20sp",
"textColor": "#000000",
"layout_alignParentLeft": "true",
"layout_alignParentBottom": "true",
"layout_marginLeft": "48dp",
"layout_marginBottom": "50dp",
"text": "Клавиатура QWERTY",
"action": {
"@": {
"type": "DEEPLINK",
"data": "app://mertech.ru/scales/keyboard_qwerty?main=true"
}
},
"font_family": "geometria_bold",
"background": {
"type": "shape",
"shape": "rectangle",
"children": [
{
"type": "corners",
"radius": "6dp"
},
{
"type": "stroke",
"color": "#5AB031",
"width": "2dp"
}
]
}
}
2.3.1.2. Диалог печати этикетки¶
Action:
PRINT_DIALOG - открывает диалог для печати.
PRINT_DIALOG_TO_HOME - открывает диалог для печати, но при закрытии возвращается к главному экрану.
PRINT_DIALOG_WITH_CONFIRM_PREDICTION - открывает диалог для печати, при этом, когда происходит печать, посылается запрос на дообучение системы для распознования товаров.
PRINT_DIALOG_TO_HOME_WITH_CONFIRM_PREDICTION - открывает диалог для печати, но при закрытии возвращается к главному экрану, при этом, когда происходит печать, посылается запрос на дообучение системы для распознования товаров.
Использование:
"action": {
"@": {
"type": "PRINT_DIALOG_WITH_CONFIRM_PREDICTION",
"data": "@{item.id}"
}
},
или
"accept_action": "PRINT_DIALOG_TO_HOME_WITH_CONFIRM_PREDICTION",
Подсказка
"accept_action"
используется в контролах, поддерживающих «подтверждение».
Примечание
Пример с "accept_action"
рассмотрен в документации к элементу управления "PinPadContainerRelativeLayout"
.
2.3.1.3. Переход к настройкам¶
Срабатывание экшена открывает всплывающее окно для ввода пароля администратора. После ввода корректного пароля открывается приложение с настройками.
Action: GO_TO_SERVICE
Использование:
{
"action_long": {
"@": {
"type": "GO_TO_SERVICE"
}
}
}
Пример использования:
Примечание
В примере реализован переход к настройкам при долгом нажатии на логотип.
{
"type": "AppCompatImageView",
"layout_width": "400dp",
"layout_height": "100dp",
"action_long": {
"@": {
"type": "GO_TO_SERVICE"
}
},
"layout_alignParentLeft": "true",
"layout_alignParentTop": "true",
"jpg": "$scenario/images/logo"
}
2.3.1.4. Возврат к предыдущим окнам¶
Actions:
GO_HOME - возврат к главному окну.
GO_BACK - возврат к предыдущему окну.
GO_MAIN - возврат к окну, помеченному как «MAIN» или к главному экрану, если метка «MAIN» не найдена.
Использование:
"action": {
"@": {
"type": "GO_HOME"
}
},
Пример:
Примечание
В примере реализована кнопка из оформленного текстового поля с надписью «Меню». Нажатие на кнопку открывает главное окно приложения.
{
"type": "TextView",
"layout_width": "243dp",
"layout_height": "74dp",
"gravity": "center",
"textSize": "23sp",
"textColor": "#FFFFFF",
"layout_align": "true",
"layout_alignParentBottom": "true",
"layout_alignParentLeft": "true",
"layout_marginBottom": "30dp",
"layout_marginLeft": "390dp",
"text": "Меню",
"action": {
"@": {
"type": "GO_HOME"
}
},
"font_family": "geometria_bold",
"background": {
"type": "shape",
"shape": "rectangle",
"children": [
{
"type": "corners",
"radius": "10dp"
},
{
"type": "solid",
"color": "#EC1C24"
}
]
}
}
2.3.1.5. Поддерживаемые запросы¶
Запрос
"app://mertech.ru/scales/products/predict"
- предназначен для получения списка распознанных товаров.
Входной параметр
"limit"
является ограничением количества выводимых товаров.
Запрос
"app://mertech.ru/scales/products/favorites"
- предназначен для получения списка популярных товаров.
Выходные параметры: getFavourites.
"productRateRepository"
"limit_products"
"category"
Запрос
"app://mertech.ru/scales/products/plu"
- выводит список plu товаров.Запрос
"app://mertech.ru/scales/products"
- выводит список товаров.Запрос
"app://mertech.ru/scales/weight"
- выводит текущий вес, отображаемый на весах.Запрос
"app://mertech.ru/scales/print"
- предназначен для печати этикетки выбранного товара.Для выбора товара можно передать параметр plu, или code, или id.
Запрос
"app://mertech.ru/scales/categories"
- выводит список категорий.Запрос
"app://mertech.ru/scales/purchase"
- получение текущей информации о товаре для экрана печати этикетки.
Входные параметры:
"plu"
,"code"
,"id"
,"weight"
.Выходные параметры: переменные класса PurchaseApi.
"weight"
"price"
"discountPrice"
"cost"
"discountCost"
"product"
"intPartPrice"
"fractPartPrice"
"intPartCost"
"fractPartCost"
"intPartDiscountPrice"
"fractPartDiscountPrice"
"intPartDiscountCost"
"fractPartDiscountCost"
"intPartWeight"
"fractPartWeight"
"currencySign"
"currencyText"
"availabilityMinUnitOfCurrency"
Запрос
"app://mertech.ru/scales/weighing/product/set-field"
- установка одного из значений выбранного товара в режиме взвешивания.
Входные параметры:
"field"
- имя параметра,"value"
- значение параметра,"weight"
,"tare"
.
Запрос
"app://mertech.ru/scales/weighing/product/current"
- предназначен для получения или установки выбранного товара по plu, коду или идентификатору.
Входные параметры:
"plu"
,"code"
или"id"
.
Запрос
"app://mertech.ru/scales/weighing/product/clearCurrent"
- сброс выбранного товара.Запрос
"app://mertech.ru/scales/weighing/product/saveCurrent"
- сохранение измененных значений выбранного товара.Запрос
"app://mertech.ru/scales/weighing/product/print"
- печать выбранного товара.
Входные параметры:
"weight"
,"tare"
, а также"plu"
,"code"
или"id"
.
Запрос
"app://mertech.ru/scales/set-tare"
- устанавливает тару.
Входные параметры:
"tare"
.Выходные параметры: «true» или «false».
Запрос
"app://mertech.ru/scales/set-zero"
- устанавливает ноль.
Выходные параметры: функция setZero.
Запрос
"app://mertech.ru/scales/weighing/set-tare"
- устанавливает тару через режим взвешивания и помечает выбранный товар как «товар изменен».
Входные параметры:
"tare"
.Выходные параметры:
"true"
или"false"
.
Запрос
"app://mertech.ru/scales/weighing/set-zero"
- устанавливает 0 через режим взвешивания и помечает выбранный товар как «товар изменен».
Выходные параметры: функция setZero возвращает
"true"
или"false"
.
Запрос
"app://mertech.ru/scales/weighing/set-packer"
- уставнавливает фасовщика.
Входные параметры:
"id"
.Выходные параметры:
"true"
или"false"
.
Запрос
"app://mertech.ru/scales/weighing/get-packers"
- получение списка фасовщиков.
Выходные параметры: возвращаемый класс ContainerPackersApi, содержащий список PackerDto.
"id"
""name"
"selected"
Запрос
"app://mertech.ru/scales/weighing/get-selected-packer"
- получение выбранного фасовщика.
Выходные параметры: возвращаемая функция getSelected, содержащая параметры класс PackerDto.
"id"
"name"
"selected"