Окна запроса даты и времени
Окна запроса даты и времени
В процессе работы плагина может потребоваться запросить у пользователя дату и время. Для этого можно показать диалоговые окна с помощью методов IViewManager.ShowDateNumpadPopup, IViewManager.ShowDateTimePopup и IViewManager.ShowCalendarPopup.
Как это выглядит в iikoFront?
В ряде случаев в процессе работы плагина ему доступен экземпляр класса IViewManager. Он доступен, например, при обработке нажатия на кнопку:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var viewManager = x.vm;
});
или срабатывании некоторых событий:
PluginContext.Notifications.BeforeOrderBill.Subscribe(x =>
{
var viewManager = x.vm;
});
Более подробно об этом классе можно прочитать в статье «Диалоговые окна».
В таких случаях, можно с помощью IViewManager показывать диалоговые окна. Рассмотрим все методы для запроса у пользователя даты и времени. Для примера, создадим кнопку с помощью метода IOperationService.AddButtonToPluginsMenu, как это показано выше, и при нажатии на неё будем показывать диалоговые окна.
Вариант 1: Date Numpad Popup
Можно запросить только дату с помощью простого диалога с цифровой клавиатурой:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var dateNumpadPopupResult = x.vm.ShowDateNumpadPopup(DateTime.Today, "Date Numpad");
});
Таким образом, при нажатии на кнопку будет показано окно выбора даты:

Метод IViewManager.ShowDateNumpadPopup(DateTime selectedDate, string title) принимает на вход 2 аргумента:
DateTime selectedDate— дата, которая будет выбрана при показе окна.string title— заголовок окна.
Метод вернёт выбранную пользователем дату, если он нажмёт «OK», либо null, если он нажмёт «Отмена».
Вариант 2: Date-Time Popup
Можно запросить дату и время с помощью диалога:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var dateTimePopupResult = x.vm.ShowDateTimePopup(DateTime.Now, "Date-Time", DateTime.Today, DateTime.Today.AddMonths(6));
});
При нажатии на кнопку будет показано окно выбора даты и времени:

Если нажать на текущую дату, то будет показан календарь, с помощью которого можно быстро переключиться на другой день:

Метод IViewManager.ShowDateTimePopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) принимает на вход 4 аргумента:
DateTime selectedDate— дата и время, которые будут выбраны при показе окна.string title— заголовок окна.DateTime minDate— минимальные дата и время, которые могут быть выбраны. Свойство влияет и на календарь.DateTime maxDate— максимальные дата и время, которые могут быть выбраны. Свойство влияет и на календарь.
Метод вернёт выбранные пользователем дату и время, если он нажмёт «OK», либо null, если он нажмёт «Отмена».
Вариант 3: Calendar Popup
Для выбора даты можно использовать окно с календарём:
PluginContext.Operations.AddButtonToPluginsMenu("Sample Plugin", x =>
{
var dateCalendarPopupResult = x.vm.ShowCalendarPopup(DateTime.Today, "Calendar", DateTime.Today, DateTime.Today.AddMonths(6));
});
При нажатии на кнопку будет показано окно:

Метод IViewManager.ShowCalendarPopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) принимает на вход 4 аргумента:
DateTime selectedDate— дата, которая будет выбрана при показе окна.string title— заголовок окна.DateTime minDate— минимальная дата, которая может быть выбрана.DateTime maxDate— максимальная дата, которая может быть выбрана.
Метод вернёт выбранную пользователем дату, если он нажмёт «OK», либо null, если он нажмёт «Отмена».