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"