Triggers: Difference between revisions
No edit summary |
No edit summary |
||
Line 93: | Line 93: | ||
:Результат: Объект Library, найденная библиотека. | :Результат: Объект Library, найденная библиотека. | ||
===Объект Library=== | ===Объект Library=== | ||
Line 119: | Line 118: | ||
====Свойства==== | ====Свойства==== | ||
;title : Название библиотеки. | ;title : Название библиотеки. | ||
===Объект Entry=== | ===Объект Entry=== | ||
Line 138: | Line 136: | ||
;favorites : Возвращает true - если запись находится в избранном | ;favorites : Возвращает true - если запись находится в избранном | ||
;deleted : Возвращает true - если запись удалена (находится в корзине). | ;deleted : Возвращает true - если запись удалена (находится в корзине). | ||
===Объект DefaultEntry=== | ===Объект DefaultEntry=== | ||
Line 146: | Line 143: | ||
:Установить значение поля. | :Установить значение поля. | ||
:Параметры: name - имя поля, value - значение поля. | :Параметры: name - имя поля, value - значение поля. | ||
===Примеры=== | ===Примеры=== | ||
Line 190: | Line 186: | ||
===Примеры=== | ===Примеры=== | ||
==Взаимодействие с системой== | |||
===Глобальные Функции=== | |||
====message(text)==== | |||
:Отобразить пользователю небольшое всплывающее сообщение. | |||
:Параметры: text - текст для отображения. | |||
====cancel()==== | |||
:Отменить операцию вызвавшую данный триггер. Многие действия возникают при каких либо операциях с записями (создание, модификация, удаление и .д.). Если фаза действия предшествует операции, то возможно отменить эту операцию с помощью данной функции. Например, применять эту функцию можно при проверки корректности вводимых данных перед сохранением записи. | |||
====system()==== | |||
:Получить информацию о системе. | |||
:Результат: Объект System с информацией о системе. | |||
====log(text)==== | |||
:Вывести строку в лог-файл выполнения скрипта. Функция будет полезна для отладки скриптов. | |||
:Параметры: Text - текст который будет выведен в лог. | |||
====intent(action)==== | |||
:Создать объект обмена сообщениями - Intent. С помощью данного объекта можно передать данные другому приложению, или заставить другое приложение выполнить какое-либо действие. | |||
Функция доступна только для Android. | |||
:Параметры: action - Строка, определяющая стандартное действие, которое требуется выполнить. | |||
:Результат: Intent - объект обмена сообщениями. | |||
После получения объекта требуется добавить в него отправляемые данные и вызывать метод send(). | |||
В Android есть множество встроенных действий, список и описание которых вы можете найти [https://developer.android.com/reference/android/content/Intent.html здесь]. | |||
===Объект System=== | |||
Данный объект содержит информацию о системе. | |||
====Свойства==== | |||
;os : имя операционной системы на которой запущен скрипт. | |||
===Объект Intent=== | |||
Объект обмена сообщениями. Объект создается с помощью вызова глобальной функции intent(). | |||
====Методы==== | |||
=====data(uri)===== | |||
Установить URI ссылающийся на данные. | |||
Параметры:uri - | |||
=====mimeType(mime)===== | |||
Установить MIME тип данных. | |||
Параметры:mime - | |||
=====extra(key, value)===== | |||
Установить дополнительные данные в виде ключ-значение. | |||
Параметры: | |||
=====send()===== | |||
Отправить сообщение. |
Revision as of 14:29, 10 September 2016
Триггер это скрипт, который запускается при определенных действиях или событиях. В качестве языка для написания скриптов используется JavaScript. Результатом выполнения скрипта может быть изменение или создание записи, выполнение http-запроса, создание файла, валидация данных и другие действия.
Создание триггера
Каждая библиотека может иметь несколько триггеров, чтобы открыть список триггеров зайдите в библиотеку, откройте меню и выберите пункт Триггеры.
Для создания триггера откройте список триггеров библиотеки и нажмите кнопку +. После этого необходимо выбрать момент запуска триггера и написать скрипт реализующий ваши потребности.
Момент запуска триггера
Момент запуска триггера определяется двумя параметрами:
- Действие
- это какая-либо выполняемая пользователем операция с записями.
- Фаза действия
- определяет более точный момент срабатывания триггера. Для каждого типа Действия доступны свои фазы.
Выполнение скрипта
Фаза в которую запускается триггер также определяет то, как будет выполняться скрипт - синхронно или асинхронно.
- Синхронное выполнение скрипта
- приложение приостановить взаимодействие с пользователем на время выполнения скрипта. Не рекомендуется в таких скриптах выполнять длительные операции.
- Асинхронное выполнение скрипта
- скрипт запускается в фоновом режиме, приложение не приостанавливает взаимодействие с пользователем. Обычно асинхронно выполняются скрипты в последних фазах действия.
Безопасность
Некоторые функции доступные из скриптов (операции с файлами, выполнение http-запросов, доступ к другим библиотекам) в целях безопасности требуют соответствующих разрешений. Эти разрешения пользователь должен установить вручную для каждой библиотеки отдельно.
Чтобы открыть диалог установки разрешений для скриптов - откройте список триггеров библиотеки и нажмите кнопку Щит на тулбаре. Установка разрешений должна выполняться на каждом устройстве отдельно. Выбранные разрешения не синхронизируются между устройствами.
Разрешения для скриптов
- Libraries
- Определяет какие библиотеки помимо родной будут доступны скрипту. Вы можете предоставить доступ ко всем библиотекам или выбрать определенные библиотеки. Данное разрешение требуется для функции libByName.
- Read files
- Предоставляет скрипту доступ на чтение файлов с запоминающего устройства. Данное разрешение требуется для функции file.
- Write files
- Предоставляет скрипту доступ на создание и изменение файлов в запоминающем устройстве. Данное разрешение требуется для функции file.
- Network
- Предоставляет скрипту право выполнять http запросы. Данное разрешение требуется для функции http.
Действия
Действие | Фаза | Выполнение |
---|---|---|
Создание записи | открытие формы создания | синхронное |
перед сохранением записи | синхронное | |
после сохранения записи | асинхронное | |
Изменение записи | открытие формы изменения записи | синхронное |
перед сохранением записи | синхронное | |
после сохранения записи | асинхронное | |
Удаление записи | перед удалением записи | синхронное |
после удаления записи | асинхронное | |
Открытие карточки записи | перед отображением окна | синхронное |
после отображения окна | асинхронное | |
Добавление записи в избранное | перед операцией | синхронное |
после операции | асинхронное | |
Удаление записи из избранного | перед операцией | синхронное |
после операции | асинхронное |
Библиотеки и записи
Глобальные Функции
entry()
- Получить запись в контексте которой происходит выполнение скрипта. Т.е. если скрипт выполняется на действие Изменение записи, то данная функция возвращает изменяемую запись.
- Функция доступа для всех действий и фаз выполнения, за исключением "Создание записи - открытие формы создания", для данного действия используйте функцию entryDefault.
- Результат: Объект Entry, текущая запись.
entryDefault()
- Получить объект для установки значений по умолчанию для еще не созданной записи. Функция доступна для действия Создание записи и фазы выполнения Открытие формы создания.
- Результат: Объект DefaultEntry.
lib()
- Получить библиотеку в контексте которой происходит выполнение скрипта.
- Результат: Объект Library, текущая библиотека.
libByName(name)
- Найти библиотеку по имени. В настройках безопасности должно быть установлено разрешение на использование получаемой библиотеки.
- Результат: Объект Library, найденная библиотека.
Объект Library
Через этот объект осуществляется доступ к записям библиотеки. Можно работать с текущей библиотекой - lib() или с любой другой библиотекой в базе данных - libByName(). Помимо функций получения записей данный объект предоставляет возможность создания новой записи.
Методы
entries()
- Получить все записи библиотеки.
- Результат: Array[Entry] Массив записей. Записи отсортированы по времени их создания - от новых к старым.
find(query)
- Поиск записей в библиотеки по значениям полей. Поиск аналогичен поиску через интерфейс программы.
- Параметры: query - строка поиска.
- Результат: Array[Entry] Массив найденных записей. Записи отсортированы по времени их создания - от новых к старым.
findByKey(name)
- Поиск записи в библиотеки по имени. Для библиотеки должен быть включен параметр Уникальные имена.
- Параметры: name - имя записи.
- Результат: Объект Entry.
create(values)
- Создание новой записи в библиотеке.
- Параметры: values - объект класса Object содержащий значения полей.
- Результат: Объект Entry, созданная запись.
Свойства
- title
- Название библиотеки.
Объект Entry
Этот объект является записью библиотеки и предоставляет возможность получать и устанавливать значения полей.
Методы
set(name , value)
- Установить значение поля. После вызова метода сразу же происходит запись значения в базу данных.
- Параметры: name - имя поля, value - значение поля.
field(name)
- Получить значение поля
- Параметры: name - имя поля
- Результат: значение поля, тип результата зависит от типа поля.
Свойства
- title
- Имя записи.
- description
- Описание записи.
- favorites
- Возвращает true - если запись находится в избранном
- deleted
- Возвращает true - если запись удалена (находится в корзине).
Объект DefaultEntry
Шаблон со значениями по умолчанию для создания новой записи.
Методы
set(name , value)
- Установить значение поля.
- Параметры: name - имя поля, value - значение поля.
Примеры
Функции работы с файлами
С помощью скриптов можно выполнять чтение или запись файлов расположенных во внутренней памяти устройства или на сд-карте. Все операции с файлами производятся через объект File, который получается через вызов метода file().
Для работы с файлами для библиотеки должно быть установлено разрешение - на чтение и/или на запись файлов.
file(name)
Открыть файл для операций чтения или записи.
- Параметр: name - имя и полный путь к файлу. Например, если файл расположен на sd-card, путь должен иметь вид /sdcard/example.txt.
- Результат: Объект File.
Объект File
Данный объект возвращается функцией file() и предоставляет доступ к запрошенному файлу. Если файл с указанным в функции file() именем ещё не существует, то но будет создан.
Методы
Свойства
Функции выполнения http запросов
С помощью скриптов можно выполнять http-запросы, что позволяет обмениваться информацией с веб-службами предоставляющими API. Также через http запросы вы можете интегрировать Memento со своей системой. Все операции с файлами производятся через объект Http, который получается через вызов глобального метода http().
Http запросы доступны при соблюдении двух условий:
- Выполнение скрипта должно быть асинхронным (фоновым), так как обработка запроса по сети может занимать много времени. Таким образом выполнять http-запросы можно только в последних фазах действий.
- В библиотеки должно быть установлено разрешение - Network.
Объект Http
Интерфейс выполнения http запросов.
Методы
get(url)
- Выполнить get запрос.
- Параметры: url - http адрес, должен начинаться с http или https
- Результат: HttpResult - объект содержащий результат выполнения http запроса.
Объект HttpResult
Результат выполнения http запроса
Свойства
- code
- http код ответа, если запрос выполнен успешно, то он обычно равен 200.
- body
- тело ответа в виде текста.
Примеры
Взаимодействие с системой
Глобальные Функции
message(text)
- Отобразить пользователю небольшое всплывающее сообщение.
- Параметры: text - текст для отображения.
cancel()
- Отменить операцию вызвавшую данный триггер. Многие действия возникают при каких либо операциях с записями (создание, модификация, удаление и .д.). Если фаза действия предшествует операции, то возможно отменить эту операцию с помощью данной функции. Например, применять эту функцию можно при проверки корректности вводимых данных перед сохранением записи.
system()
- Получить информацию о системе.
- Результат: Объект System с информацией о системе.
log(text)
- Вывести строку в лог-файл выполнения скрипта. Функция будет полезна для отладки скриптов.
- Параметры: Text - текст который будет выведен в лог.
intent(action)
- Создать объект обмена сообщениями - Intent. С помощью данного объекта можно передать данные другому приложению, или заставить другое приложение выполнить какое-либо действие.
Функция доступна только для Android.
- Параметры: action - Строка, определяющая стандартное действие, которое требуется выполнить.
- Результат: Intent - объект обмена сообщениями.
После получения объекта требуется добавить в него отправляемые данные и вызывать метод send(). В Android есть множество встроенных действий, список и описание которых вы можете найти здесь.
Объект System
Данный объект содержит информацию о системе.
Свойства
- os
- имя операционной системы на которой запущен скрипт.
Объект Intent
Объект обмена сообщениями. Объект создается с помощью вызова глобальной функции intent().
Методы
data(uri)
Установить URI ссылающийся на данные. Параметры:uri -
mimeType(mime)
Установить MIME тип данных. Параметры:mime -
extra(key, value)
Установить дополнительные данные в виде ключ-значение. Параметры:
send()
Отправить сообщение.