Callback
При разработке приложений часто возникает задача вызова нового окна, произведение определенных манипуляций и возврат полученного значения в окно, создавшее данный интерфейс. Рассмотрим реализацию данной задачи на примере создания диалогового окна, позволяющего выбрать временной интервал. Для начала добавим кнопку, по нажатии которой будет вызываться окно выбора интервала, как указано на рис.1.
Рис.1 Добавлена кнопка выбора интервала
Функции и графический интерфейс для работы с датами и выбора интервала предоставляются в виде дополнительного набора модулей и могут быть скачаны по ссылке (будет доступна позднее). Внешний вид интерфейса модуля для выбора интервала дат и набор файлов (слева) представлен на рис.2.
Рис.2 Графический интерфейс выбора интервала
Прежде чем переходить к добавлению нового окна, следует добавить параметры в запрос, возвращающий визиты питомцев. Для добавления параметра. следует открыть запрос и к списку добавить новые параметры fromDateParam
и toDateParam
.
Настройка свойств нового параметра представлена на рис.3.
Рис.3 Добавление параметра в запрос
Новые параметры следует связать с полями таблицы. как показано на рис.4.
Рис.4 Измененный вид запроса
Получившийся текст запроса следует немного видоизменить, таким образом, как показано в блоке кода ниже. Добавление операторов сравнения >
и <
позволяют выбирать данные между датами, переданными в параметрах. В запросе также добавлена проверка параметров на NULL
, чтобы в отсутствии их значений возвращать весь диапазон данных.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
К получившемуся запросу добавляем параметры в модели данных (рис.5).
Рис.5 Измененный вид модели с параметрами времени
Теперь можно добавить обработчик кнопки и callback-функцию, которая будет выполнена по закрытии окна выбора временного интервала.
Функция обработчика представлена ниже. В качестве параметра функции отображения модального окна showModal()
передается callback-функция refreshInterval
.
1 2 3 4 5 6 7 |
|
Прежде чем переходить к refreshInterval
следует рассмотреть то, что возвращает диалог выбора интервала времени. Как видно из кода. приведенного ниже, функция возвращает JSON
с двумя полями begdate
и enddate
.
1 2 3 4 5 6 7 8 9 10 11 |
|
Рассмотрим содержимое callback-функции refreshInterval
. Параметр returnedVals
в результате вызова получит значение возвращаемого JSON
объекта. Соответствующие поля начала и конца периода передаем в параметры модели.
1 2 3 4 5 6 7 |
|
Результат работы можно посмотреть на рис.6-8.
Рис.6 Работа без выбранного интервала времени
Рис.7 Интерфейс выбора интервала времени
Рис.8 Результат фильтрации данных по временному интервалу
P.S. Если руководство непонятно, то можно оставить соответствующий комментарий.