iikoFront API SDK

Окна запроса даты и времени

Окна запроса даты и времени

В процессе работы плагина может потребоваться запросить у пользователя дату и время. Для этого можно показать диалоговые окна с помощью методов 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");
});

Таким образом, при нажатии на кнопку будет показано окно выбора даты:

date-numpad-popup

Метод IViewManager.ShowDateNumpadPopup(DateTime selectedDate, string title) принимает на вход 2 аргумента:

Метод вернёт выбранную пользователем дату, если он нажмёт «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));
});

При нажатии на кнопку будет показано окно выбора даты и времени:

date-numpad-popup

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

date-numpad-popup

Метод IViewManager.ShowDateTimePopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) принимает на вход 4 аргумента:

Метод вернёт выбранные пользователем дату и время, если он нажмёт «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));
});

При нажатии на кнопку будет показано окно:

date-numpad-popup

Метод IViewManager.ShowCalendarPopup(DateTime selectedDate, [CanBeNull] string title, DateTime minDate, DateTime maxDate) принимает на вход 4 аргумента:

Метод вернёт выбранную пользователем дату, если он нажмёт «OK», либо null, если он нажмёт «Отмена».